package br.org.acessobrasil.portal.action;

import java.util.List;

import org.apache.log4j.Logger;

import br.org.acessobrasil.portal.modelo.Menu;
import br.org.acessobrasil.portal.modelo.Usuario;
import br.org.acessobrasil.portal.persistencia.MenuDaoSpring;

/**
 * Mantem o menu
 * @author Fabio Issamu Oshiro
 *
 */
public class MenuAction extends Super{

	private static final long serialVersionUID = 1293801945334863313L;
	private static MenuDaoSpring menuDao;
	private Menu menu;
	private List<Menu> listMenu;
	private static Logger logger = Logger.getLogger(MenuAction.class);
	public MenuAction(MenuDaoSpring menuDao){
		MenuAction.menuDao = menuDao;
	}
	
	public String adicionarMenu(){
		Usuario usuario = getUsuarioLogado();
		try{
			if(menu!=null){
				menu.setSitio(getSitioAtual());
				menuDao.create(menu);
				usuario.addActionMessage(getText("sucesso.menu.criado"));
				menu = new Menu();
			}else{
				menu = new Menu();
				menu.setNoMenu(getText("label.digite.nome"));
			}
		}catch(Exception e){
			logger.error("Erro ao adicionar menu", e);
			usuario.addActionError("Erro: " + e.getMessage());
		}
		return SUCCESS;
	}
	
	public String listar() {
		listMenu = menuDao.list(getSitioAtual());
		return SUCCESS;
	}
	
	public String carregarMenu() {
		return SUCCESS;
	}
	
	public String apagarMenu(){
		Usuario usuario = getUsuarioLogado();
		try {
			if(menu!=null){
				menu = menuDao.select(menu.getNuMenu());
				if(getBtnApagar()!=null){
					if(menu.getListItemMenu().size()>0){
						usuario.addActionError(getText("erro.menu.apagar"));
						return INPUT;
					}else{
						menuDao.delete(menu.getNuMenu());
						return SUCCESS;
					}
				}else if(getBtnCancelar()!=null){
					return SUCCESS;
				}
			}
		} catch (Exception e) {
			logger.error("Erro ao apagar menu ",e);
			usuario.addActionError("Erro: " + e.getMessage());
		}
		return INPUT;
	}
	
	public String atualizarMenu() {
		Usuario usuario = getUsuarioLogado();
		try{
			if(menu!=null && menu.getNoMenu()!=null){
				Menu menuDB = menuDao.select(menu.getNuMenu());
				menuDB.setNoMenu(menu.getNoMenu());
				menuDao.update(menuDB);
				usuario.addActionMessage(getText("sucesso.menu.atualizado"));
			}else if(menu!=null && menu.getNuMenu()!=null){
				menu = menuDao.select(menu.getNuMenu());
			}
		}catch(Exception e){
			logger.error("Erro ao editar menu", e);
			usuario.addActionError("Erro: " + e.getMessage());
		}
		return  SUCCESS;
	}
	
	public Menu getMenu() {
		return menu;
	}
	public void setMenu(Menu menu) {
		this.menu = menu;
	}
	public List<Menu> getListMenu() {
		return listMenu;
	}
	public void setListMenu(List<Menu> listMenu) {
		this.listMenu = listMenu;
	}
	
}
